Merge pull request #10355 from geoffsim/MSP-VTX
[inav.git] / docs / Broken USB recovery.md
blob3406653b981e5d33cc75749ea0a84abda8f59abd
1 # Broken USB recovery 
3 It is possible to flash INAV without USB over UART 1 or 3.
5 ## Prerequisites:
6 - USB/UART adapter (FT232, CP2102, etc.)
7 - STM32 Cube Programmer (https://www.st.com/en/development-tools/stm32cubeprog.html)
9 To gain access to the FC via Configurator, MSP must be activated on a UART as standard. Some FCs already have this enabled by default, if not a custom firmware must be created.
11 The following targets have MSP activated on a UART by default:
13 | Target | Standard MSP Port |
14 |-----------| ----------- |
15 | AOCODARCF4V3 | UART5 |
16 | ATOMRCF405NAVI_DELUXE | UART1 |
17 | FF_F35_LIGHTNING | UART1 |
18 | FLYCOLORF7V2 | UART4 |
19 | GEPRCF405_BT_HD | UART5* |
20 | GEPRCF722_BT_HD | UART4* |
21 | IFLIGHT_BLITZ_F7_AIO | UART1 |
22 | JHEMCUF405WING | UART6 |
23 | JHEMCUH743HD | UART4 |
24 | KAKUTEH7 | UART1 and UART2* |
25 | KAKUTEH7WING | UART6 |
26 | MAMBAF405_2022A | UART4 |
27 | MAMBAF405US | UART4 |
28 | MAMBAF722 | UART4 |
29 | MAMBAF722 APP | UART4*|
30 | MAMBAF722WING | UART4 |
31 | MAMBAF722_X8 | UART4 |
32 | MAMBAH743 | UART4* |
33 | MATEKF405SE | UART1 |
34 | NEUTRONRCH743BT | UART3* |
35 | SDMODELH7V1 | UART1 and UART2 |
36 | SKYSTARSH743HD | UART4 |
37 | SPEEDYBEEF4 | UART5* |
38 | SPEEDYBEEF405MINI | UART4* |
39 | SPEEDYBEEF405V3 | UART4* |
40 | SPEEDYBEEF405V4 | UART4* |
41 | SPEEDYBEEF405WING | UART6 |
42 | SPEEDYBEEF7 | UART6 |
43 | SPRACINGF4EVO | UART1 |
44 | TMOTORF7V2 | UART5 |
46 (*) No Pads/Pins, Port is used interally (Bluetooth)
48 ## Custom firmware:
50 If the FC does not have MSP activated on a UART by default or does not have a connector for it, a custom firmware must be built. 
51 The following procedure describes the process under Windows 10/11:
53 Please read [Building in Windows 2010 or 11 with Linux Subsystem](https://github.com/iNavFlight/inav/blob/master/docs/development/Building%20in%20Windows%2010%20or%2011%20with%20Linux%20Subsystem.md)
54 and follow the instructions up to "Building with Make".
56 In the step 'prepare build environment' add the option `-DMSP_UART=SERIAL_PORT_USARTX` to `cmake`
58 Replace the X in SERIAL_PORT_USARTX with the number of UART/serial port on which MSP is to be activated.
60 Example:
61 For UART 2: `cmake -DMSP_UART=SERIAL_PORT_USART2 ..`
62 For UART 3: `cmake -DMSP_UART=SERIAL_PORT_USART3 ..`
63 etc.
65 Build the firmware as described in the document above (`make [YOUR_TARGET]`).
67 ## Flashing via Uart:
69 1. Disconnect ALL peripherals and the USB Cable from the FC. To power the FC use a battery or use the 5V provided from the USB/Serial Converter. 
70 2. Connect UART 1 or 3 (other UARTS will not work) and GND to the USB/Serial converter (RX -> TX, TX -> RX)
71 3. Keep the boot/dfu button pressed
72 4. Switch on the FC / supply with power
73 5. Start STM32 CubeProgrammer and go to "Erasing & Programming", second option in the menu.
74 6. Select UART (blue dropdown field) and select the COM port of the USB/Serial adapter and press "Connect". The corresponding processor should now be displayed below.
75 7. Click on "Full flash erase". This is also necessary if you are flashing the same firmware version that was previously on the FC, otherwise MSP may not be activated on the UART.
76 8. Under "Download" load the previously created firmware (`INAV_X.X.X_[Your Target].hex`) or the standard firmware if UART is already activated there. The option "Verify programming" is optional but recommended. Make sure that "Skip flash erase while programming" is NOT activated.
77 9. Click "Start Programming"
79 After the process is completed, switch the FC off and on again and then the Configurator can connect to the FC via USB/serial adapter and the previously configured UART.